package cn.stimd.spring.beans;

import org.springframework.core.MethodParameter;

import java.lang.reflect.Field;

/**
 * 类型转换器
 * <p>
 * Created by Stimd
 * 项目地址：https://gitee.com/stimd/spring-wheel
 * 公众号：Java编程探微
 */
public interface TypeConverter {
    /**
     * 将对象转换为指定的类型
     */
    <T> T convertIfNecessary(Object value, Class<T> requiredType) throws TypeMismatchException;


    /**
     * 将对象转换成指定类型，并检查转换后的类型是否与方法参数的类型一致
     */
    <T> T convertIfNecessary(Object value, Class<T> requiredType, MethodParameter methodParam) throws TypeMismatchException;


    /**
     * 将对象转换成指定类型，并检查转换后的类型是否与字段的类型一致
     */
    <T> T convertIfNecessary(Object value, Class<T> requiredType, Field field) throws TypeMismatchException;
}
